This invention relates to a technique for preventing a computer program from being used by an unauthorized computer system and, moreover, to such a technique wherein the values of certain characteristics exhibited by the authorized computer system are used as a basis to determine whether the system on which the program to be executed is authorized.
With the proliferation and popularity of personal computer systems, both for professional, or office use and for personal, or home use, the availability of various types of software packages is practically overwhelming. Such software packages usually are provided as machine-readable information recorded on a so-called floppy disk. The programs represented by such software packages are run simply by loading the floppy disk into a suitable disk drive and then "installing" the program into the computer system, as by writing the software so as to be resident in the computer random access memory (RAM). When the user is provided with a computer system having a fixed disk drive (also referred to as a "hard" or "Winchester" disk drive), the computer program usually is transferred from the floppy disk to the fixed disk for subsequent use by the computer system.
In the absence of any so-called "copy" protection, it is appreciated that an individual who purchases the software package from an authorized source, such as a computer store, may make several copies of that software package and each copy may be used on a separate computer system. Although back-up copies of software packages normally are desired, it is highly undesirable to tolerate numerous unauthorized and, thus, "pirated" copies. Such piracy deprives the software supplier of fees to which he is otherwise entitled. Each pirated copy of a software package, that is, each unauthorized copy that is made, deprives the software supplier of a legitimate sale of that package.
Various techniques have been proposed to solve or at least minimize this significant problem of software piracy. A common, yet simple attempt has been by way of legal warning. Typically, software is not "sold" per se to the end user. Rather, the user merely purchases a license which permits him to use the software package subject to certain constraints, one of which is his agreement not to distribute copies to others who have not purchased a similar license. These threats of legal retribution have been largely ignored.
Other attempts at copy protection have relied upon various inherent characteristics of both the hardware (i. e. characteristics of the computer system) and software (i. e. the instructions to manipulate data). For example, software packages have been designed such that, after one copy has been made, certain key features, or modules, of the package are obliterated to the extent that further copying is inhibited. While this prevents the running of most straightforward "copy" operations, various skilled technicians have developed unconventional programs which reproduce virtually each and every bit that is recorded in the original software package. These programs do not require the manipulation of any data included in the software package and, thus, the aforementioned key features, or modules, are not obliterated.
Another copy protection technique incorporates some characteristic in the purchased software package which can be detected by a standard floppy disk drive but which cannot be reproduced by that drive. However, the usual mechanical tolerances found in floppy disk drives minimize the efficacy of this technique. Indeed, the operational characteristics of a floppy disk drive may be such that the aforementioned characteristic cannot even be detected and, thus, the software package cannot be executed even though it, or a copy, was purchased legitimately.
Yet another copy protection technique has been designed primarily for use with software packages that have been transferred to a fixed disk. Here, the original floppy disk which contains that package must be loaded into the computer system before the software that had been recorded on the fixed disk can be read therefrom. That is, the original floppy disk functions as a "key" that must be loaded into the system in order to "unlock" the software package from the fixed disk.
Various other copy prevention techniques that have been developed include the following:
Exploiting the fact that, in most "original" software packages, the sectors recorded on the floppy disk normally are in general alignment. However, a particular characteristic associated with this alignment, although detectable on the original disk, normally is not carried over when that disk is copied. Execution of the software package thus can be made dependent upon detecting this alignment-associated characteristic.
Providing with the software package recorded on the original floppy disk a so-called "boot-strap" program which, when executed, indicates that no further data is recorded (i. e. it indicates that the rest of the disk is empty). When the original disk is copied, the boot-strap program also is copied but, in accordance with typical copying routines, the computer system is deceived into recognizing that no other data is available to be copied.
A particular sector on the original disk is destroyed, as by a laser, during manufacture. Upon invocation, the program in question verifies that that particular sector of the disk is, in fact, unwritable before continuing execution. The corresponding sector of a copied disk will, in general, be writable, and thus a copy can be distinguished from the original.
As a practical matter, it is not the act of copying a software package per se that is most troublesome to software suppliers. Rather, it is the use of the copies on various additional computer systems without paying for the right to use those copies. If each computer system is provided with a "secret" serial number, an ideal technique for avoiding the proliferation of unauthorized copies of software packages could be achieved simply by preventing that software from being executed, manipulated or copied until the secret serial number is recorded in the software itself. Subsequent execution of the software package, that is, execution of the applications software program, would be enabled only if the recorded serial number matches the "secret" number of the computer system in which the software was invoked. Unfortunately, computer systems are not provided with such secret serial numbers.
An analogous difficulty arises in a network of computers (or data processing devices) wherein only one or a select few of the networked computers may be authorized to execute a particular software package. As is known to those of ordinary skill in the art, a software program that is stored on a "hard" disk (i. e. a Winchester disk) of an appropriate computer in the network may be configured to be accessed by any computer in that network and downloaded so as to be resident in the RAM of that computer. If a particular software program stored on a network hard disk is not be authorized for use by all computers in that network, some means should be provided to permit only authorized users to access and run that program, even though it is physically available to all.